///*
// * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
// *
// * Licensed under the Apache License, Version 2.0 (the "License");
// * you may not use this file except in compliance with the License.
// * You may obtain a copy of the License at
// *
// *     http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// */
//
//package com.zhl.user.util;
//
//import cn.hutool.core.util.StrUtil;
//import com.zhl.common.constant.SecurityConstants;
//import com.zhl.user.vo.ZhlUser;
//import lombok.experimental.UtilityClass;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.context.SecurityContextHolder;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//
///**
// * 安全工具类
// *
// * @author L.cm
// */
//@UtilityClass
//public class SecurityUtils {
//
//	/**
//	 * 获取Authentication
//	 */
//	public Authentication getAuthentication() {
//		return SecurityContextHolder.getContext().getAuthentication();
//	}
//
//	/**
//	 * 获取用户
//	 */
//	public ZhlUser getUser(Authentication authentication) {
//		Object principal = authentication.getPrincipal();
//		if (principal instanceof ZhlUser) {
//			return (ZhlUser) principal;
//		}
//		return null;
//	}
//
//	/**
//	 * 获取用户
//	 */
//	public ZhlUser getUser() {
//		Authentication authentication = getAuthentication();
//		if (authentication == null) {
//			return null;
//		}
//		return getUser(authentication);
//	}
//
//	/**
//	 * 获取用户角色信息
//	 * @return 角色集合
//	 */
//	public List<Integer> getRoles() {
//		Authentication authentication = getAuthentication();
//		Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
//
//		List<Integer> roleIds = new ArrayList<>();
//		authorities.stream().filter(granted -> StrUtil.startWith(granted.getAuthority(), SecurityConstants.ROLE))
//				.forEach(granted -> {
//					String id = StrUtil.removePrefix(granted.getAuthority(), SecurityConstants.ROLE);
//					roleIds.add(Integer.parseInt(id));
//				});
//		return roleIds;
//	}
//
//}
